// src/ui/qt/VoiceRecognition.h

#pragma once

#include <QFile>
#include <QObject>
#include <QAudioInput>
#include <QAudioSource>  // 从音频捕获数据
#include <QBuffer>
#include <QTimer>
#include <QNetworkAccessManager>
#include <QThread>

class VoiceRecognition : public QObject {
    Q_OBJECT
public:
    explicit VoiceRecognition(const QString& outputDir = "", QObject *parent = nullptr);
    ~VoiceRecognition() {
        stopRecording();
    }
    bool isRecording() { return m_isRecording && m_audioSource; }
    void startRecording();  // 开始录音
    void stopRecording();   // 停止录音
    QString getRecordedFilePath() const;  // 获取录音文件路径

signals:
    void recordingStarted();  // 录音开始信号
    void recordingStopped();  // 录音结束信号

private:
    QAudioSource *m_audioSource; // 音频输入源对象，负责从麦克风捕获音频数据
    QIODevice *m_audioDevice; // 音频设备接口，提供音频数据的读取功能
    QFile *m_audioFile; // 文件对象，用于将录制的音频数据写入磁盘
    QString m_tempFilePath; // 存储录音临时文件的路径
    bool m_isRecording; // 监听是否正在录音，防止重复录音
};